"""
简化版资源规划工具主程序

支持单一Excel文件输入，自动生成资源计划
"""

import argparse
import sys
from pathlib import Path

from resource_plan_app import ResourcePlanApp


def print_banner():
    """打印程序启动横幅"""
    print("\n" + "=" * 60)
    print("           自动资源规划工具 (Auto Resource Planner)")
    print("=" * 60)
    print("版本: 2.0.0 (简化版)")
    print("功能: Excel输入，自动生成日本模板格式资源计划")
    print("=" * 60 + "\n")


def main():
    """主函数"""
    parser = argparse.ArgumentParser(
        description="自动资源规划工具 - 简化版",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
使用示例：
  # 基本使用
  python simple_main.py --input data/test/test1_complete_project.xlsx

  # 指定输出目录
  python simple_main.py --input data/test/test1_complete_project.xlsx --output results/

  # 启用详细输出和调试模式
  python simple_main.py --input data/test/test1_complete_project.xlsx --verbose --debug
        """
    )

    # 必需参数
    parser.add_argument(
        "--input", "-i",
        type=str,
        required=True,
        help="输入Excel文件路径（包含三个sheet：project_info, project_roles, phases_detail）"
    )

    # 可选参数
    parser.add_argument(
        "--output", "-o",
        type=str,
        help="输出目录路径（默认：data/output）"
    )

    parser.add_argument(
        "--config", "-c",
        type=str,
        default="config.yaml",
        help="配置文件路径（默认：config.yaml）"
    )

    parser.add_argument(
        "--verbose", "-v",
        action="store_true",
        help="显示详细的计算结果"
    )

    parser.add_argument(
        "--debug",
        action="store_true",
        help="启用调试模式（显示详细错误信息）"
    )

    parser.add_argument(
        "--quiet", "-q",
        action="store_true",
        help="静默模式（只显示错误信息）"
    )

    # 解析参数
    args = parser.parse_args()

    # 显示横幅
    if not args.quiet:
        print_banner()

    try:
        # 验证输入文件
        if not Path(args.input).exists():
            print(f"错误：输入文件不存在 '{args.input}'")
            sys.exit(1)

        if not args.quiet:
            print(f"正在初始化应用程序...")

        # 创建应用程序实例
        app = ResourcePlanApp(config_path=args.config, debug=args.debug)

        if not args.quiet:
            print(f"应用程序初始化完成")
            print(f"开始执行资源规划流程...\n")

        # 执行完整工作流程
        success = app.run_complete_workflow(
            input_file=args.input,
            output_dir=args.output,
            verbose=args.verbose
        )

        # 显示执行结果摘要
        if not args.quiet:
            summary = app.get_summary()
            print("\n" + "=" * 50)
            print("📋 执行结果摘要")
            print("=" * 50)
            print(f"✅ 配置加载: {'成功' if summary['config_loaded'] else '失败'}")
            print(f"📁 数据加载: {'成功' if summary['data_loaded'] else '失败'}")
            print(f"🎯 计算执行: {'成功' if summary['calculation_completed'] else '失败'}")

            if summary['data_loaded']:
                counts = summary['data_counts']
                print(f"\n📊 数据统计:")
                print(f"   项目角色: {counts['project_roles']} 个")
                print(f"   阶段详情: {counts['phases_detail']} 个")
                print(f"   月度分配: {counts['monthly_allocations']} 个")

            if summary.get('calculation_results'):
                results = summary['calculation_results']
                print(f"\n🎯 计算结果:")
                print(f"   总人月数: {results['total_person_months']:.1f}")
                print(f"   总成本: {results['total_cost']:,.0f} 元")
                print(f"   涉及角色: {results['unique_roles']} 个")
                print(f"   项目周期: {results['duration_months']} 个月")

            print("\n" + "=" * 50)
            if success:
                print("🎉 资源规划流程执行成功！")
            else:
                print("❌ 资源规划流程执行失败，请检查日志获取详细信息")
            print("=" * 50)

        # 根据执行结果设置退出码
        sys.exit(0 if success else 1)

    except KeyboardInterrupt:
        print("\n\n⚠️  用户中断了程序执行")
        sys.exit(130)

    except Exception as e:
        print(f"\n❌ 程序执行过程中发生错误：{e}")

        if args.debug:
            print("\n🔍 详细错误信息:")
            import traceback
            traceback.print_exc()
        else:
            print("💡 使用 --debug 参数可以查看详细错误信息")

        print("\n使用 'python simple_main.py --help' 查看使用说明")
        sys.exit(1)


if __name__ == "__main__":
    main()